package com.apps.member.service;

import com.apps.goods.model.po.KupaGoods;
import com.apps.goods.model.po.KupaGoodsComment;
import com.apps.member.model.po.KupaMember;
import com.apps.sworld.dao.sGod;
import com.apps.vip.model.po.KupaVipGoods;
import com.baomidou.mybatisplus.core.metadata.IPage;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author 大鹏
 * @since 2020-10-02
 */
public interface IKupaMemberService extends sGod<KupaMember>
{

    /**
     * 手机号登录,没有就自动注册
     * @param mobile
     * @param validcode
     */
    KupaMember mobileLogin(String mobile,String validcode);

    /**
     * 邮件登录,没有就注册
     * @param email
     * @param validcode
     */
    KupaMember emailLogin(String email,String validcode);

    /**
     * 微信登录,没有就自动注册
     * @param openid
     * @param nickname
     */
    KupaMember wxLogin(String openid,String nickname,String face,Integer sex);

    /**
     * qq登录,没有就自动注册
     * @param openid
     * @param nickname
     */
    KupaMember qqLogin(String openid,String nickname,String face,Integer sex);

    /**
     * 用户退出登录
     * @param member_id
     */
    void loginOut(Integer member_id);
    /**
     * 收藏商品
     * @param goods_id
     * @return
     */
    int collectGoods(Integer member_id,Integer goods_id);

    /**
     * 取消收藏商品
     * @param goods_id
     * @return
     */
    int cancelCollectGoods(Integer member_id,Integer goods_id);

    /**
     * 点赞商品
     * @param goods_id
     * @return
     */
    int likeGoods(Integer member_id,Integer goods_id);

    /**
     * 取消点赞商品
     * @param goods_id
     * @return
     */
    int cancelLikeGoods(Integer member_id,Integer goods_id);

    /**
     * 绑定手机号
     * @param member_id
     * @param mobile
     * @param valid_code
     */
    void bindMobile(Integer member_id,String mobile,String valid_code);

    /**
     * 绑定邮箱
     * @param member_id
     * @param email
     * @param valid_code
     */
    void bindEmail(Integer member_id,String email,String valid_code);

    /**
     * 绑定微信
     * @param member_id
     * @param openid
     */
    void bindWx(Integer member_id,String openid);

    /**
     * 绑定QQ
     * @param member_id
     * @param openid
     */
    void bindQQ(Integer member_id,String openid);

    /**
     * 修改昵称
     * @param member_id
     * @param nickname
     */
    void modifyNickName(Integer member_id,String nickname);

    /**
     * 浏览商品添加浏览记录
     * @param member_id
     * @param goods
     */
    void viewsGoods(Integer member_id,KupaGoods goods);

    /**
     * 评论商品
     * @param goods_id
     * @param context
     * @return
     */
    List<KupaGoodsComment> commentGoods(Integer member_id, Integer goods_id, String context);

    /**
     * 分页查询历史浏览过的商品数据
     * @param member_id
     * @param goods_cat_id 商品分类ID,如果为0则不按分类查询
     * @param pageNo
     * @param pageSize
     * @return
     */
    IPage<KupaGoods> pageQueryGoodsByHistoryBrows(Integer member_id,Integer goods_cat_id,int pageNo,int pageSize);

    /**
     * 分页查询已经购买的商品
     * @param member_id
     * @param goods_cat_id 商品分类ID,如果为0则不按分类查询
     * @param pageNo
     * @param pageSize
     * @return
     */
    IPage<KupaGoods> pageQueryGoodsByOwnBuys(Integer member_id,Integer goods_cat_id,int pageNo,int pageSize);

    /**
     * 分页查询收藏的商品
     * @param member_id
     * @param goods_cat_id 商品分类ID,如果为0则不按分类查询
     * @param pageNo
     * @param pageSize
     * @return
     */
    IPage<KupaGoods> pageQueryGoodsByCollect(Integer member_id, Integer goods_cat_id,int pageNo, int pageSize);

    /**
     * 分页查询历史下载过的商品
     * @param member_id
     * @param goods_cat_id 商品分类ID,如果为0则不按分类查询
     * @param pageNo
     * @param pageSize
     * @return
     */
    IPage<KupaGoods> pageQueryGoodsByDownload(Integer member_id,Integer goods_cat_id,int pageNo,int pageSize);

    /**
     * 开通vip
     * @param member_id
     * @param vipGoods
     */
    void openingVip(Integer member_id, KupaVipGoods vipGoods);

    /**
     * 校验用户是不是vip
     * @return
     */
    boolean isVip(Integer member_id);

    /**
     * 校验用户是不是vip
     * @param member
     * @return
     */
    boolean isVip(KupaMember member);

    /**
     * 商品是否可以下载,调用这个方法必须绝对保证返回为真的话绝对进行下载业务
     * @param member_id
     * @param goods_id
     * @return
     */
    KupaGoods downloadGoods(Integer member_id,Integer goods_id);

    /**
     * 获取用户免费下载额度剩余次数,指每日下载额度+赠送的永久下载额度
     * @param member_id
     * @return
     */
    int getTotalDownloadFreeCountByMemberId(Integer member_id);
}
